Cloud computing is rapidly changing the Internet into a collection of clouds, which provide a variety of computing resources, storage resources, and, in the future, a variety of resources that are currently unimagined.
Specifically, cloud computing is a technology infrastructure that facilitates: supplementing, consuming, and delivering Information Technology (IT) services. The cloud environment provides elastic provisioning of dynamically scalable virtual services.
A tenant is considered as a subscriber of some amount of storage in the cloud or an application who owns part of the shared storage environment. Multi-tenancy is an architecture where a single instance of software runs on a server, which is serving multiple tenants. In a multi-tenant environment, all tenants and their users consume the service from a same technology platform, sharing all components in the technology stack including the data model, servers, and database layers. Further, in a multi-tenant architecture, the data and configuration is virtually partitioned and each tenant works with a customized virtual application instance.
One challenge in achieving multi-tenancy in a cloud storage environment is to provide an isolated networking stack on a per-tenant basis. This is so because the storage controller shares the operating system resources for all the tenants that are resident in the multi-tenant architecture. To correct this, traditional multi-tenant architectures will dedicate a unique Internet Protocol (IP) address for accessing the multi-tenant architecture on a per-tenant basis.
Yet, current multi-tenancy approaches to storage are monolithic in nature. The storage stack as well as the networking stack is shared among all tenants and each tenant is associated with a unique IP address that a storage protocol stack directly listens on. Moreover, the approaches do not permit for movement of the storage stack from one IP address to another IP address without disrupting an existing tenant to storage connection.
Today, clients access multi-tenant environments through storage service end points using Network File System (NFS), Common Internet File System (CIFS) and Internet Small Computer System Interface (iSCSI). Once a client makes a connection to a corresponding storage protocol stack on the storage controller, the connection is rigid. So, if a tenant needs to be moved to a different storage controller, the connection with the client is broken.